package cn.tedu.servlet;

import org.omg.CORBA.ARG_OUT;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;

/**
 * Author：程Sir
 * Name： SmallServer
 * Content:
 */
public class RAFDemo {
    public static void main(String[] args) {
        File file = new File("user.txt");
        System.out.println("文件的长度是："+file.length()); //0
        writerUser(file);
        System.out.println("文件的长度是："+file.length()); // 100
        System.out.println( " =======================");
        readUser(file);
    }
    // 写入数据
    public static void writerUser(File file){

        // 创建对象
        try (RandomAccessFile raf = new RandomAccessFile(file,"rw")){

            String username = "王五";
            String password = "456789";
            String nikename = "五五";
            String age= "19";

            // 写入数据之前，要将指针移动到文件的末尾，这样做的就是拼接。而不是覆盖
            raf.seek(file.length());

            byte[] datas = username.getBytes("utf-8");
            // 将用户名的长度进行扩容  32
            datas = Arrays.copyOf(datas, 32);
            // 写入用户名
            raf.write(datas);

            datas = password.getBytes("utf-8");
            // 将密码的长度进行扩容  32
            datas = Arrays.copyOf(datas, 32);
            // 写入密码
            raf.write(datas);

            datas = nikename.getBytes("utf-8");
            // 将昵称的长度进行扩容  32
            datas = Arrays.copyOf(datas, 32);
            // 写入昵称
            raf.write(datas);

            // 写入年龄 4
            raf.writeInt(Integer.valueOf(age));


        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }


    }

    // 读取数据
    public static  void readUser(File file){
        // 创建对象
        try (RandomAccessFile raf = new RandomAccessFile(file,"r")){

            byte[] datas = new  byte[32];
            for (int i = 0; i < file.length()/100; i++) {

                // 读取用户名
                raf.read(datas);
                String username = new String(datas,"utf-8");
                // 读取密码
                raf.read(datas);
                String password = new String(datas,"utf-8");
                // 读取昵称
                raf.read(datas);
                String nikename = new String(datas,"utf-8");

                // 读取年龄
                int age = raf.readInt();


                System.out.println("用户名："+username);
                System.out.println("密码："+password);
                System.out.println("昵称："+nikename);
                System.out.println("年龄："+age);
            }
            System.out.println("========");

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }




}
